package caom.wangs.java8.lamda;

public class LamdaDemo {
    public static void main(String[] args) {
        new Thread(
                new Runnable() {
                    @Override
                    public void run() {
                        System.out.println(Thread.currentThread().getName());// run（）中的代码是 一一对应的呢？
                    }
                }
        ).start();

        new Thread(
                () -> System.out.println(Thread.currentThread().getName())//怎么知道 这行代码和 run（）中的代码是 一一对应的呢？
        ).start();

//        在接口 caom.wangs.java8.lamda.LamdaDemo.myRunnable 中找到多个非重写 abstract 方法
        //lamda 表达式就不知道要去找哪个方法了 run2 run 两个方法
//        buildThread(()->{
//            System.out.println("hello");
//        });
    }

    public static void buildThread(myRunnable runnable) {
        new Thread(runnable).start();
    }

    /**
     * 特征：
     * 只有一个抽象方法
     * 默认方法除外
     * Object中的方法除外
     */
    @FunctionalInterface
    public interface myRunnable extends Runnable {
        //默认实现
        public default void run2() {

        }

        ;

        boolean equals(Object obj);

        String toString();
    }
}
